home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / security / UnresolvedPermission.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  5.5 KB  |  331 lines

  1. package java.security;
  2.  
  3. import [Ljava.security.cert.Certificate;;
  4. import java.io.ByteArrayInputStream;
  5. import java.io.IOException;
  6. import java.io.ObjectInputStream;
  7. import java.io.ObjectOutputStream;
  8. import java.io.Serializable;
  9. import java.lang.reflect.Constructor;
  10. import java.security.cert.Certificate;
  11. import java.security.cert.CertificateEncodingException;
  12. import java.security.cert.CertificateException;
  13. import java.security.cert.CertificateFactory;
  14. import java.security.cert.X509Certificate;
  15. import java.util.ArrayList;
  16. import java.util.Hashtable;
  17. import sun.security.util.Debug;
  18.  
  19. public final class UnresolvedPermission extends Permission implements Serializable {
  20.    private static final long serialVersionUID = -4821973115467008846L;
  21.    private static final Debug debug = Debug.getInstance("policy,access", "UnresolvedPermission");
  22.    private String type;
  23.    private String name;
  24.    private String actions;
  25.    private transient Certificate[] certs;
  26.    private static final Class[] PARAMS0 = new Class[0];
  27.    private static final Class[] PARAMS1 = new Class[]{String.class};
  28.    private static final Class[] PARAMS2 = new Class[]{String.class, String.class};
  29.  
  30.    public UnresolvedPermission(String var1, String var2, String var3, Certificate[] var4) {
  31.       super(var1);
  32.       if (var1 == null) {
  33.          throw new NullPointerException("type can't be null");
  34.       } else {
  35.          this.type = var1;
  36.          this.name = var2;
  37.          this.actions = var3;
  38.          if (var4 != null) {
  39.             for(int var5 = 0; var5 < var4.length; ++var5) {
  40.                if (!(var4[var5] instanceof X509Certificate)) {
  41.                   this.certs = (Certificate[])((Certificate;)var4).clone();
  42.                   break;
  43.                }
  44.             }
  45.  
  46.             if (this.certs == null) {
  47.                int var8 = 0;
  48.  
  49.                int var6;
  50.                for(var6 = 0; var8 < var4.length; ++var8) {
  51.                   ++var6;
  52.  
  53.                   while(var8 + 1 < var4.length && ((X509Certificate)var4[var8]).getIssuerDN().equals(((X509Certificate)var4[var8 + 1]).getSubjectDN())) {
  54.                      ++var8;
  55.                   }
  56.                }
  57.  
  58.                if (var6 == var4.length) {
  59.                   this.certs = (Certificate[])((Certificate;)var4).clone();
  60.                }
  61.  
  62.                if (this.certs == null) {
  63.                   ArrayList var7 = new ArrayList();
  64.  
  65.                   for(int var9 = 0; var9 < var4.length; ++var9) {
  66.                      var7.add(var4[var9]);
  67.  
  68.                      while(var9 + 1 < var4.length && ((X509Certificate)var4[var9]).getIssuerDN().equals(((X509Certificate)var4[var9 + 1]).getSubjectDN())) {
  69.                         ++var9;
  70.                      }
  71.                   }
  72.  
  73.                   this.certs = new Certificate[var7.size()];
  74.                   var7.toArray(this.certs);
  75.                }
  76.             }
  77.          }
  78.  
  79.       }
  80.    }
  81.  
  82.    Permission resolve(Permission var1, Certificate[] var2) {
  83.       if (this.certs != null) {
  84.          if (var2 == null) {
  85.             return null;
  86.          }
  87.  
  88.          for(int var4 = 0; var4 < this.certs.length; ++var4) {
  89.             boolean var3 = false;
  90.  
  91.             for(int var5 = 0; var5 < var2.length; ++var5) {
  92.                if (this.certs[var4].equals(var2[var5])) {
  93.                   var3 = true;
  94.                   break;
  95.                }
  96.             }
  97.  
  98.             if (!var3) {
  99.                return null;
  100.             }
  101.          }
  102.       }
  103.  
  104.       try {
  105.          Class var12 = var1.getClass();
  106.          if (this.name == null && this.actions == null) {
  107.             try {
  108.                Constructor var15 = var12.getConstructor(PARAMS0);
  109.                return (Permission)var15.newInstance();
  110.             } catch (NoSuchMethodException var8) {
  111.                try {
  112.                   Constructor var17 = var12.getConstructor(PARAMS1);
  113.                   return (Permission)var17.newInstance(this.name);
  114.                } catch (NoSuchMethodException var7) {
  115.                   Constructor var6 = var12.getConstructor(PARAMS2);
  116.                   return (Permission)var6.newInstance(this.name, this.actions);
  117.                }
  118.             }
  119.          } else if (this.name != null && this.actions == null) {
  120.             try {
  121.                Constructor var14 = var12.getConstructor(PARAMS1);
  122.                return (Permission)var14.newInstance(this.name);
  123.             } catch (NoSuchMethodException var9) {
  124.                Constructor var16 = var12.getConstructor(PARAMS2);
  125.                return (Permission)var16.newInstance(this.name, this.actions);
  126.             }
  127.          } else {
  128.             Constructor var13 = var12.getConstructor(PARAMS2);
  129.             return (Permission)var13.newInstance(this.name, this.actions);
  130.          }
  131.       } catch (NoSuchMethodException var10) {
  132.          if (debug != null) {
  133.             debug.println("NoSuchMethodException:\n  could not find proper constructor for " + this.type);
  134.             var10.printStackTrace();
  135.          }
  136.  
  137.          return null;
  138.       } catch (Exception var11) {
  139.          if (debug != null) {
  140.             debug.println("unable to instantiate " + this.name);
  141.             var11.printStackTrace();
  142.          }
  143.  
  144.          return null;
  145.       }
  146.    }
  147.  
  148.    public boolean implies(Permission var1) {
  149.       return false;
  150.    }
  151.  
  152.    public boolean equals(Object var1) {
  153.       if (var1 == this) {
  154.          return true;
  155.       } else if (!(var1 instanceof UnresolvedPermission)) {
  156.          return false;
  157.       } else {
  158.          UnresolvedPermission var2 = (UnresolvedPermission)var1;
  159.          if (!this.type.equals(var2.type)) {
  160.             return false;
  161.          } else {
  162.             if (this.name == null) {
  163.                if (var2.name != null) {
  164.                   return false;
  165.                }
  166.             } else if (!this.name.equals(var2.name)) {
  167.                return false;
  168.             }
  169.  
  170.             if (this.actions == null) {
  171.                if (var2.actions != null) {
  172.                   return false;
  173.                }
  174.             } else if (!this.actions.equals(var2.actions)) {
  175.                return false;
  176.             }
  177.  
  178.             if ((this.certs != null || var2.certs == null) && (this.certs == null || var2.certs != null) && (this.certs == null || var2.certs == null || this.certs.length == var2.certs.length)) {
  179.                for(int var3 = 0; this.certs != null && var3 < this.certs.length; ++var3) {
  180.                   boolean var5 = false;
  181.  
  182.                   for(int var4 = 0; var4 < var2.certs.length; ++var4) {
  183.                      if (this.certs[var3].equals(var2.certs[var4])) {
  184.                         var5 = true;
  185.                         break;
  186.                      }
  187.                   }
  188.  
  189.                   if (!var5) {
  190.                      return false;
  191.                   }
  192.                }
  193.  
  194.                for(int var6 = 0; var2.certs != null && var6 < var2.certs.length; ++var6) {
  195.                   boolean var8 = false;
  196.  
  197.                   for(int var7 = 0; var7 < this.certs.length; ++var7) {
  198.                      if (var2.certs[var6].equals(this.certs[var7])) {
  199.                         var8 = true;
  200.                         break;
  201.                      }
  202.                   }
  203.  
  204.                   if (!var8) {
  205.                      return false;
  206.                   }
  207.                }
  208.  
  209.                return true;
  210.             } else {
  211.                return false;
  212.             }
  213.          }
  214.       }
  215.    }
  216.  
  217.    public int hashCode() {
  218.       int var1 = this.type.hashCode();
  219.       if (this.name != null) {
  220.          var1 ^= this.name.hashCode();
  221.       }
  222.  
  223.       if (this.actions != null) {
  224.          var1 ^= this.actions.hashCode();
  225.       }
  226.  
  227.       return var1;
  228.    }
  229.  
  230.    public String getActions() {
  231.       return "";
  232.    }
  233.  
  234.    public String getUnresolvedType() {
  235.       return this.type;
  236.    }
  237.  
  238.    public String getUnresolvedName() {
  239.       return this.name;
  240.    }
  241.  
  242.    public String getUnresolvedActions() {
  243.       return this.actions;
  244.    }
  245.  
  246.    public Certificate[] getUnresolvedCerts() {
  247.       return this.certs == null ? null : (Certificate[])((Certificate[])this.certs.clone());
  248.    }
  249.  
  250.    public String toString() {
  251.       return "(unresolved " + this.type + " " + this.name + " " + this.actions + ")";
  252.    }
  253.  
  254.    public PermissionCollection newPermissionCollection() {
  255.       return new UnresolvedPermissionCollection();
  256.    }
  257.  
  258.    private void writeObject(ObjectOutputStream var1) throws IOException {
  259.       var1.defaultWriteObject();
  260.       if (this.certs != null && this.certs.length != 0) {
  261.          var1.writeInt(this.certs.length);
  262.  
  263.          for(int var2 = 0; var2 < this.certs.length; ++var2) {
  264.             Certificate var3 = this.certs[var2];
  265.  
  266.             try {
  267.                var1.writeUTF(var3.getType());
  268.                byte[] var4 = var3.getEncoded();
  269.                var1.writeInt(var4.length);
  270.                var1.write(var4);
  271.             } catch (CertificateEncodingException var5) {
  272.                throw new IOException(var5.getMessage());
  273.             }
  274.          }
  275.       } else {
  276.          var1.writeInt(0);
  277.       }
  278.  
  279.    }
  280.  
  281.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  282.       Hashtable var3 = null;
  283.       var1.defaultReadObject();
  284.       if (this.type == null) {
  285.          throw new NullPointerException("type can't be null");
  286.       } else {
  287.          int var4 = var1.readInt();
  288.          if (var4 > 0) {
  289.             var3 = new Hashtable(3);
  290.             this.certs = new Certificate[var4];
  291.          }
  292.  
  293.          for(int var5 = 0; var5 < var4; ++var5) {
  294.             String var6 = var1.readUTF();
  295.             CertificateFactory var2;
  296.             if (var3.containsKey(var6)) {
  297.                var2 = (CertificateFactory)var3.get(var6);
  298.             } else {
  299.                try {
  300.                   var2 = CertificateFactory.getInstance(var6);
  301.                } catch (CertificateException var12) {
  302.                   throw new ClassNotFoundException("Certificate factory for " + var6 + " not found");
  303.                }
  304.  
  305.                var3.put(var6, var2);
  306.             }
  307.  
  308.             Object var7 = null;
  309.  
  310.             try {
  311.                var13 = new byte[var1.readInt()];
  312.             } catch (OutOfMemoryError var11) {
  313.                throw new IOException("Certificate too big");
  314.             }
  315.  
  316.             var1.readFully(var13);
  317.             ByteArrayInputStream var8 = new ByteArrayInputStream(var13);
  318.  
  319.             try {
  320.                this.certs[var5] = var2.generateCertificate(var8);
  321.             } catch (CertificateException var10) {
  322.                throw new IOException(var10.getMessage());
  323.             }
  324.  
  325.             var8.close();
  326.          }
  327.  
  328.       }
  329.    }
  330. }
  331.